package com.lehe.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.lehe.entry.PlayerInfoDto;
import com.lehe.entry.UserGoldDetailDto;
import com.lehe.entry.dbbean.GameUserDto;
import com.lehe.entry.dbbean.GoldDetailDto;
import com.lehe.entry.xh.ApplyDto;

@Mapper
public interface GoldDetailDao {
	
	/**
	 * @Description:查询充值下分明细
	* @author:wq 
	* @date:2018年3月11日	* 
	* @param GoldDetailDto 查询参数
	* @param count 记录条数
	* @param userId 操作用户 子查询该用户下属用户
	 */
	public List<UserGoldDetailDto> queryGoldDetail(@Param("dto")GoldDetailDto dto,@Param("count")Integer count, @Param("userId")Long userId);
	

	/**
	 * @Description: 查询金币总额 
	* @author:wq 
	* @date:2018年3月7日
	* @param busiType 类型：1=充值或扣值、2=提成
	* @param isAdd 类型：true=充值、false=扣值
	* @param userId  操作用户 子查询该用户下属用户
	 */
	public String queryTotalFee(@Param("busiType")Integer busiType,@Param("isAdd")Boolean isAdd, @Param("userId")Long userId);
	

	/**
	 * @Description: 查询今日金币总额 
	* @author:wq 
	* @date:2018年3月7日
	* @param busiType 类型：1=充值或扣值、2=提成
	* @param isAdd 类型：true=充值、false=扣值
	* @param userId 操作用户 子查询该用户下属用户 
	 */
	public String queryTotalFeeToday(@Param("busiType")Integer busiType,@Param("isAdd")Boolean isAdd, @Param("userId")Long userId);
	

	/**
	 * @Description: 查询充值笔数 
	* @author:wq 
	* @date:2018年3月7日
	* @param busiType 类型：1=充值或扣值、2=提成
	* @param isAdd 类型：true=充值、false=扣值
	* @param userId 操作用户 子查询该用户下属用户 
	 */
	public Integer queryTotalFeeCount(@Param("busiType")Integer busiType,@Param("isAdd")Boolean isAdd, @Param("userId")Long userId);


	/**
	 * @Description:查询待充值用户
	* @author:wq 
	* @date:2018年3月11日
	* @param queryStr 查询条件 userID 或者 昵称 
	 * @param nullity 是否封禁
	 * @param memberOrder  是否vip
	* @param userId 操作用户 子查询该用户下属用户 
	* @param page 分页
	* @param pageSize 每页条数
	* @param sd 开始日期
	* @param ed 结束日期
	* 
	 */
	public List<UserGoldDetailDto> queryPlayerToPay(@Param("queryStr")String queryStr, @Param("nullity")Integer nullity, @Param("memberOrder")Integer memberOrder, @Param("userId")Long userId,@Param("sd")String sd,@Param("ed")String ed, @Param("page")Integer page,@Param("pageSize")Integer pageSize);


	/**
	 * @Description:查询待充值用户记录条数
	* @author:wq 
	* @date:2018年3月11日
	* @param queryStr 查询条件 userID 或者 昵称 
	 * @param nullity 是否封禁
	 * @param memberOrder  是否vip
	* @param userId 操作用户 子查询该用户下属用户 
	* @param sd 开始日期
	* @param ed 结束日期
	* 
	 */
	public Integer queryPlayerToPayCount(@Param("queryStr")String queryStr, @Param("nullity")Integer nullity, @Param("memberOrder")Integer memberOrder, @Param("userId")Long userId,@Param("sd")String sd,@Param("ed")String ed);
	
	public void insert(GoldDetailDto dto);
	
	
	public GameUserDto queryGameUserByUser(@Param("userId")Long userId); 
	
	public GameUserDto queryAccountsInfoByUnionID(@Param("UnionId")String UnionId); 
	
	public List<UserGoldDetailDto> queryUserDetailInfo(@Param("userId")Long userId, @Param("userType")Long userType, @Param("topId")Long topId);
	
	public List<UserGoldDetailDto> queryUserWinInfo(@Param("userId")Long userId, @Param("sd")String sd,@Param("ed")String ed);
	
	public List<UserGoldDetailDto> countGoldDetail(@Param("userId")Long userId, @Param("sd")String sd,@Param("ed")String ed);
	
	public List<UserGoldDetailDto> countGiveScore(@Param("userId")Long userId, @Param("sd")String sd,@Param("ed")String ed);
	
	public List<UserGoldDetailDto> countTax(@Param("userId")Long userId, @Param("sd")String sd,@Param("ed")String ed);
	
	
	public List<UserGoldDetailDto> selectGoldDetailByUserType(@Param("userId")Long userId, @Param("userType")Long userType, @Param("sd")String sd,@Param("ed")String ed, @Param("page")Integer page,@Param("pageSize")Integer pageSize);

	public List<UserGoldDetailDto> selectGoldDetail(@Param("userId")Long userId, @Param("sd")String sd,@Param("ed")String ed, @Param("page")Integer page,@Param("pageSize")Integer pageSize);


	public int selectGoldDetailCount(@Param("userId")Long userId, @Param("userType")Long userType, @Param("sd")String sd,@Param("ed")String ed);
	

	public UserGoldDetailDto queryTotalIndex(@Param("topId")Long topId,@Param("isToday")Boolean isToday);
	
	public UserGoldDetailDto countGiveScoreIndex(@Param("topId")Long topId,@Param("isToday")Boolean isToday);
	
	public UserGoldDetailDto countTaxIndex(@Param("topId")Long topId,@Param("isToday")Boolean isToday);
	
	public Integer countAccounts(@Param("topId")Long topId);
	
	public UserGoldDetailDto sumGoldCoinCount(@Param("topId")Long topId);

	public Integer userVip(@Param("userId")Long userId, @Param("vip")Integer vip);	

	public Integer setNullity(@Param("userId")Long userId, @Param("nullity")Integer nullity);

	public List<ApplyDto> selectApplyDetail(@Param("userId")Long userId, @Param("sd")String sd,@Param("ed")String ed, @Param("passFlag")Integer passFlag ,@Param("page")Integer page,@Param("pageSize")Integer pageSize);
}
